package tech.lingrui.mnpanonymousservice.model.bean;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import tech.lingrui.mnpanonymousservice.service.impl.RoundServiceImpl;

import java.util.Map;

/**
 * 一句游戏
 *
 * @author lqs2
 * @date 2018/11/25, Sun
 */
@Getter
@Setter
@ToString(callSuper = true)
public class GameModel extends BaseModel {

    /**
     * 游戏等待用户加入
     */
    public static final int STATE_WAITING_USER = -4;

    /**
     * 游戏被创建者取消
     */
    public static final int STATE_CANCELED = -3;

    /**
     * 游戏创建后超时
     */
    public static final int STATE_TIME_OUT = -2;

    /**
     * 用户已经加入，等待开始
     */
    public static final int STATE_WAITING_START = -1;

    /**
     * 游戏进行中
     */
    public static final int STATE_PROCESSING = 1;


    /**
     * 游戏已经结束
     */
    public static final int STATE_FINISHED = 2;


    /**
     * 游戏发起人
     */
    private UserModel creator;

    /**
     * 参与者
     */
    private UserModel participant;

    /**
     * 一个游戏的所有回合，<第几回合，回合model>
     */
    private Map<Integer, Round> rounds;

    /**
     * 获胜者
     */
    private UserModel winner;


    /**
     * 游戏当前状态
     */
    private int state;


    /**
     * 当前回合数
     */
    private int roundNo;

    /**
     * 获胜者可获得的积分
     * */
    private int winnerIntegral;


    /**
     * 失败者失去的积分
     * */
    private int loserIntegral;

    /**
     * 回合处理器
     * */
    private RoundServiceImpl roundHandler;
}
